//
// This software is now distributed according to
// the Lesser Gnu Public License. Please see
// http://www.gnu.org/copyleft/lesser.txt for
// the details.
// -- Happy Computing!
//
package com.stevesoft.pat;

import java.util.Hashtable;

/** The '^' or the '\A' Pattern, matches the start of a string. */
class Start extends Pattern {

	boolean retIsStart;

	Start(boolean b) {
		retIsStart = b;
	}

	public int matchInternal(int pos, Pthings pt) {
		if (retIsStart && pt.mFlag && pos > 0 && pt.src.charAt(pos - 1) == '\n')
			return nextMatch(pos, pt);
		if (pos == 0)
			return nextMatch(pos, pt);
		return -1;
	}

	public String toString() {
		if (retIsStart)
			return "^" + nextString();
		else
			return "\\A" + nextString();
	}

	public patInt maxChars() {
		return new patInt(0);
	}

	Pattern clone1(Hashtable h) {
		return new Start(retIsStart);
	}
};
